数组函数和操作符

最近更新时间: 2024-10-17 17:10:00

数组操作符

TDSQL-A PostgreSQL版 支持如下用于数组类型的操作符:

操作符 描述 示例 结果
= 等于 ARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3] t
<> 不等于 ARRAY[1,2,3] <> ARRAY[1,2,4] t
< 小于 ARRAY[1,2,3] < ARRAY[1,2,4] t
> 大于 ARRAY[1,4,3] > ARRAY[1,2,4] t
<= 小于等于 ARRAY[1,2,3] <= ARRAY[1,2,3] t
>= 大于等于 ARRAY[1,4,3]>=ARRAY[1,4,3] t
@> 包含 ARRAY[1,4,3] @> ARRAY[3,1] t
<@ 被包含 ARRAY[2,7] <@ ARRAY[1,7,4,2,6] t
&& 重叠 ARRAY[1,4,3] && ARRAY[2,1] t
|| 数组和数组串接 ARRAY[1,2,3] || ARRAY[4,5,6] {1,2,3,4,5,6}
|| 数组和数组串接 ARRAY[1,2,3]||ARRAY[[4,5,6],[7,8,9]] {{1,2,3},{4,5,6},{7,8,9}}
|| 元素到数组串接 3 || ARRAY[4,5,6] {3,4,5,6}
|| 数组到元素串接 ARRAY[4,5,6] || 7 {4,5,6,7}

数组函数

函数 返回类型 描述
array_append(anyarray, anyelement) anyarray 向一个数组的末端追加一个元素
array_cat(anyarray, anyarray) anyarray 连接两个数组
array_ndims(anyarray) int 返回数组的维度数
array_length(anyarray, int) int 返回被请求的数组维度的长度
array_lower(anyarray, int) int 返回被请求的数组维度的下界
array_position(anyarray, anyelement [, int]) int 返回数组中第二个参数第一次出现的下标。 起始于第三个参数或第一个元素指示的元素位置(数组必须是一维的)
array_prepend(anyelement, anyarray) anyarray 向一个数组的首部追加一个元素
array_remove(anyarray, anyelement) anyarray 从数组中移除所有等于给定值的所有元素(数组必须是一维的)
array_replace(anyarray, anyelement, anyelement) anyarray 将每一个等于给定值的数组元素替换成一个新值
array_to_string( anyarray, text [, text]) text 使用提供的定界符和可选的空串连接数组元素
array_upper(anyarray, int) int 返回被请求的数组维度的上界
string_to_array(text, text [, text]) text[] 使用提供的定界符和可选的空串将字符串划分成数组元素

示例:

postgres=# SELECT array_append(ARRAY[1,2], 3);
array_append 
--------------
{1,2,3}
(1 row) 
postgres=# SELECT array_cat(ARRAY[1,2,3], ARRAY[4,5]);
array_cat 
-------------
{1,2,3,4,5}
(1 row) 
postgres=# SELECT array_ndims(ARRAY[[1,2,3], [4,5,6]]);
array_ndims 
-------------
     2
(1 row) 
postgres=# SELECT array_length(array[1,2,3], 1);
array_length 
--------------
     3
(1 row) 
postgres=# SELECT array_lower('[0:2]={1,2,3}'::int[], 1);
array_lower 
-------------
     0
(1 row) 
postgres=# SELECT array_position(ARRAY['sun','mon','tue','wed','thu','fri','sat'], 'mon');
array_position 
----------------
      2
(1 row) 
postgres=# SELECT array_prepend(1, ARRAY[2,3]);
array_prepend 
---------------
{1,2,3}
(1 row)

postgres=# SELECT array_remove(ARRAY[1,2,3,2], 2);
array_remove 
--------------
{1,3}
(1 row) 
postgres=# SELECT array_replace(ARRAY[1,2,5,4], 5, 3);
array_replace 
---------------
{1,2,3,4}
(1 row)
postgres=# SELECT array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*');
array_to_string 
-----------------
1,2,3,*,5
(1 row) 
postgres=# SELECT array_upper(ARRAY[1,8,3,7], 1);
array_upper 
-------------
     4
(1 row)
postgres=# SELECT string_to_array('xx~^~yy~^~zz', '~^~', 'yy');
string_to_array 
-----------------
{xx,NULL,zz}
(1 row)